﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EntLib.Base.Env
{
    /// <summary>
    /// 应用程序的环境变量
    /// </summary>
    public class AppEnv
    {
        /// <summary>
        /// 取当前进程的完整路径，包含文件名(进程名)。
        /// result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
        /// </summary>
        public   string AssemblyLocation
        {
            get
            {
                return this.GetType().Assembly.Location;

            }
        }
        /// <summary>
        /// //获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径，包含文件名(进程名)。
        /// result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
        /// </summary>
        public string ModuleFileName
        {
            get
            {
                return System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            }
        }
        /// <summary>
        /// 获取和设置当前目录（即该进程从中启动的目录）的完全限定路径
        /// result: X:\xxx\xxx (.exe文件所在的目录)
        /// </summary>
        public string CurrentDirectory
        {
            get
            {
                return System.Environment.CurrentDirectory;
            }
        }

        /// <summary>
        /// 获取当前 Thread 的当前应用程序域的基目录，它由程序集冲突解决程序用来探测程序集
        /// result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
        /// </summary>
        public string BaseDirectory
        {
            get
            {
                return System.AppDomain.CurrentDomain.BaseDirectory;
            }
        }

        /// <summary>
        /// 获取和设置包含该应用程序的目录的名称。(推荐)
        /// result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
        /// </summary>
        public string ApplicationBase
        {
            get
            {
                return System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; 
            }
        }
    }
}
